﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Data.Dao.Linq;
using Crosland.Automotriz.Core;

using Crosland.Automotriz.Logic.ControlExeption;
using System.Data.SqlClient;


namespace Crosland.Automotriz.Logic.Linq
{
    public class clsT_Ven_Metas_OficinaLogic
    {
        clsT_Ven_Metas_OficinaDAO clst_ven_metas_oficina = new clsT_Ven_Metas_OficinaDAO();


        public IEnumerable<Object> lista(int id, string anio, String strTipoMeta)
        {
            IEnumerable<Object> resultado = null;

            try
            {
                resultado = clst_ven_metas_oficina.lista(id, anio, strTipoMeta);
            }
            catch (Exception ex)
            {

                throw new RunException("Error al listar Metas oficina", ex);
            }

            if (resultado == null)
            {

                try
                {
                    resultado = clst_ven_metas_oficina.lista(id, anio, strTipoMeta);
                }
                catch (SqlException sqlEx)
                {
                    throw new RunException("ERROR EN EL PROCEDIMIENTO ListarMarcaActivo", sqlEx);
                }
                catch (Exception ex)
                {
                    throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex);
                }
            }
            return resultado;

        }

        public IEnumerable<Object> listaOficina(int idCabOfi)
        {
            return clst_ven_metas_oficina.listaOficina(idCabOfi);
        }

        public List<Globales.lista_Metas_Oficina> listaOficinaMetas(int idCabOfi, string anio, string mes)
        {
            try
            {
                return clst_ven_metas_oficina.listaOficinaMetas(idCabOfi, anio, mes);
            }
            catch (Exception ex)
            {

                throw new RunException("Error al listar metas oficina", ex);
            }

        }

        public bool Insertar(T_VEN_METAS_OFICINA Obj)
        {
            try {
                return clst_ven_metas_oficina.Insertar(Obj);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO Insertar", sqlEx); }
            catch (Exception ex)
            {
                throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); 
            }
            

        }
        public bool Modificar(int id_ubic_cab, int id_canal_distri, int id_ofi_vta, string anio, string mes, int id_grupo_articulo, int cant)
        {
            return clst_ven_metas_oficina.Modificar(id_ubic_cab, id_canal_distri, id_ofi_vta, anio, mes, id_grupo_articulo, cant);
        }

        public bool ModificarIMP(int id_ubic_cab, int id_canal_distri, int id_ofi_vta, string anio, string mes, int id_grupo_articulo, decimal imp_meta)
        {

            return clst_ven_metas_oficina.ModificarIMP(id_ubic_cab, id_canal_distri, id_ofi_vta, anio, mes, id_grupo_articulo, imp_meta);
        }
        public int BusquedaRegistroExistentes(int ID_UBIC_VEND_CAB, int ID_OFICINA, string ANIO, string MES, int ID_GRUPO_ARTICULO, int ID_CANAL_DISTRIB)
        {

            return clst_ven_metas_oficina.BusquedaRegistroExistentes(ID_UBIC_VEND_CAB, ID_OFICINA, ANIO, MES, ID_GRUPO_ARTICULO, ID_CANAL_DISTRIB);

        }
        public bool Eliminar(T_VEN_METAS_OFICINA Obj)
        {

            return clst_ven_metas_oficina.Eliminar(Obj);
        }

        public bool InsertaReplicacionOficina(int ID_UBIC_VEND_CAB, int ID_CANAL_DISTRIB, int ID_OFICINA, int ID_GRUPO_ARTICULO, string ANIO, string MES, string NroRuedas, int CANT, int? IMP_META, int? ID_MONEDA)
        {
            try
            {
                return clst_ven_metas_oficina.InsertaReplicacionOficina(ID_UBIC_VEND_CAB, ID_CANAL_DISTRIB, ID_OFICINA, ID_GRUPO_ARTICULO, ANIO, MES, NroRuedas, CANT, IMP_META, ID_MONEDA);

            }
            catch (SqlException ex)
            {

                throw new DataException("Error en la inserción", ex);
            }
            catch (Exception ex)
            {
                throw new RunException("Error en la aplicación", ex);
            }

        }

    }
}
